home *** CD-ROM | disk | FTP | other *** search
- /*
- * Tests for the various ways to test the QuickDraw 3D versions.
- *
- * Nick Thompson, March 1997.
- * Robert Dierkes, February 1998.
- * Added support for Q3GetReleaseVersion, Q3GetVersion,
- * Q3ViewerGetReleaseVersion, and Q3ViewerGetVersion.
- */
-
- /*-----------------------------------------------------------*\
- * *
- * VIEWER_VERSION should be non-zero to test Viewer gestalt *
- * *
- * Also WEAK LINK against QuickDraw3DViewerLib stub library *
- * *
- \*-----------------------------------------------------------*/
- #define VIEWER_VERSION 1
-
- /*#define OLDROUTINENAMES 1 /* Use this until Gestalt.h is updated */
-
- #include <stdio.h>
- #include <QD3D.h>
- #include <Gestalt.h>
-
-
- #if OLDROUTINENAMES
- #include <QD3DGestalt.h>
- #else
- #endif /* OLDROUTINENAMES */
-
- #if defined(VIEWER_VERSION) || defined(VIEWER_VERSION)
- #if OLDROUTINENAMES
- #include <QD3DViewerGestalt.h>
- #endif /* OLDROUTINENAMES */
-
- #include <QD3DViewer.h>
- #endif /* VIEWER_VERSION */
-
-
-
- /*-----------------------------------------------------------*\
- * *
- * Define these values for the current version *
- * *
- \*-----------------------------------------------------------*/
- #define kQD3DCurrentGestaltValue 0x00010504
- #define kQD3DCurrentMajorRevision 1L
- #define kQD3DCurrentMinorRevision 5L
-
- #if defined(VIEWER_VERSION) || defined(VIEWER_VERSION)
- #define kQD3DViewerCurrentGestaltValue 0x00010504
- #define kQD3DViewerCurrentMajorRevision 1L
- #define kQD3DViewerCurrentMinorRevision 5L
- #endif /* VIEWER_VERSION */
-
-
- /*-----------------------------------------------------------*\
- * "Release Version" - based on format of the 'vers' resource*
- \*-----------------------------------------------------------*/
- #define kMajorPosition 24 /* bit position of major release number */
- #define kMinorPosition 20 /* bit position of minor release number */
- #define kDotPosition 16 /* bit position of dot release number */
- #define kMajorMask (0xFF << kMajorPosition)
- #define kMinorMask (0x0F << kMinorPosition)
- #define kDotMask (0x0F << kDotPosition)
-
- #define RELEASE_TO_MAJOR_MINOR_DOT(_release,_major,_minor,_dot) \
- _major = (_release & kMajorMask) >> kMajorPosition; \
- _minor = (_release & kMinorMask) >> kMinorPosition; \
- _dot = (_release & kDotMask) >> kDotPosition;
-
- /*-----------------------------------------------------------*\
- * Gestalt Version number *
- \*-----------------------------------------------------------*/
- #define kGestaltMajorPosition 16 /* bit position of major release number */
- #define kGestaltMinorPosition 8 /* bit position of minor release number */
- #define kGestaltDotPosition 0 /* bit position of dot release number */
- #define kGestaltMajorMask (0xFF << kGestaltMajorPosition)
- #define kGestaltMinorMask (0xFF << kGestaltMinorPosition)
- #define kGestaltDotMask (0xFF << kGestaltDotPosition)
-
- #define GESTALT_TO_MAJOR_MINOR_DOT(_gestalt,_major,_minor,_dot) \
- _major = (((unsigned long) _gestalt) & kGestaltMajorMask) >> kGestaltMajorPosition; \
- _minor = (((unsigned long) _gestalt) & kGestaltMinorMask) >> kGestaltMinorPosition; \
- _dot = (((unsigned long) _gestalt) & kGestaltDotMask) >> kGestaltDotPosition;
-
-
- /*
- * Main
- */
- void main(void)
- {
- TQ3Status status = kQ3Failure,
- initStatus = kQ3Failure;
- OSErr osError;
- long gestaltValue;
- unsigned long releaseQd3dValue,
- releaseQd3dMajor,
- releaseQd3dMinor,
- releaseQd3dDot;
- unsigned long releaseViewer,
- releaseViewerMajor,
- releaseViewerMinor,
- releaseViewerDot;
- unsigned long gestaltMajor,
- gestaltMinor,
- gestaltDot;
- unsigned long majorRevision,
- minorRevision;
-
- /*---------------*
- * QuickDraw 3D *
- *---------------*/
-
- /* Query Gestalt for presence of QuickDraw 3D */
- gestaltValue = ~0;
- osError = Gestalt(gestaltQD3D, &gestaltValue);
-
- if (osError != noErr) {
- printf("Error: Gestalt check for QuickDraw 3D extension failed; \n", osError);
- goto Exit_VersionTest;
- } else {
- if (gestaltValue == gestaltQD3DNotPresent) {
- printf("Error: QuickDraw 3D extension isn't installed.\n");
- goto Exit_VersionTest;
- }
- printf("QuickDraw 3D extension is installed.\n");
- }
-
- /* Query Gestalt for QuickDraw 3D version */
- gestaltValue = ~0;
- osError = Gestalt(gestaltQD3DVersion, &gestaltValue);
-
- if (osError != noErr) {
- printf("Error: Check for Gestalt gestaltQD3DVersion failed; %d;", osError);
- goto Exit_VersionTest;
- } else {
- if (gestaltValue != kQD3DCurrentGestaltValue) {
- printf("Error: Check for Gestalt gestaltQD3DVersion returned unexpected version 0x%08X\n", gestaltValue);
- goto Exit_VersionTest;
- }
-
- GESTALT_TO_MAJOR_MINOR_DOT( gestaltValue,
- gestaltMajor,
- gestaltMinor,
- gestaltDot);
-
- printf("Gestalt gestaltQD3DVersion returns %d.%d.%d\n",
- gestaltMajor, gestaltMinor, gestaltDot);
- }
-
-
- /* Initialize QuickDraw 3D */
- initStatus = Q3Initialize();
- if (initStatus == kQ3Failure) {
- printf("Error: Q3Initialize failed.\n");
- goto Exit_VersionTest;
- }
-
- /*
- * Q3GetReleaseVersion
- */
- releaseQd3dValue = ~0;
- status = Q3GetReleaseVersion(&releaseQd3dValue);
-
- if (status == kQ3Failure) {
- printf("Error: Q3GetReleaseVersion failed.\n");
- goto Exit_VersionTest;
- } else {
- RELEASE_TO_MAJOR_MINOR_DOT( releaseQd3dValue,
- releaseQd3dMajor,
- releaseQd3dMinor,
- releaseQd3dDot);
-
- if ( (gestaltMajor != releaseQd3dMajor) ||
- (gestaltMinor != releaseQd3dMinor) ||
- (gestaltDot != releaseQd3dDot) )
- {
- printf("Error: Inconsistent version numbers - Gestalt returns %d.%d.%d"
- " while Q3GetReleaseVersion returns %d.%d.%d\n",
- gestaltMajor, gestaltMinor, gestaltDot,
- releaseQd3dMajor, releaseQd3dMinor, releaseQd3dDot);
- goto Exit_VersionTest;
- }
- printf("Q3GetReleaseVersion returns %d.%d.%d\n",
- releaseQd3dMajor, releaseQd3dMinor, releaseQd3dDot);
- }
-
-
- /*
- * Q3GetVersion
- */
- majorRevision = ~0;
- minorRevision = ~0;
- status = Q3GetVersion(&majorRevision, &minorRevision);
-
- if (status == kQ3Failure) {
- printf("Error: Q3GetVersion failed.\n");
- goto Exit_VersionTest;
- } else {
- if ( (majorRevision != kQD3DCurrentMajorRevision) ||
- (minorRevision != kQD3DCurrentMinorRevision) )
- {
- printf("Error: Incorrect version number - Q3GetVersion returns %d.%d\n",
- majorRevision, minorRevision);
- goto Exit_VersionTest;
- }
- printf("Q3GetVersion returns %d.%d\n",
- majorRevision, minorRevision);
- }
-
-
-
- #if defined(VIEWER_VERSION) || defined(VIEWER_VERSION)
-
- printf("\n");
-
- /*----------------------*
- * QuickDraw 3D Viewer *
- *----------------------*/
-
- /* Gestalt for presence of QuickDraw 3D Viewer */
- gestaltValue = ~0;
- osError = Gestalt(gestaltQD3DViewer, &gestaltValue);
-
- if (osError != noErr ) {
- printf("Error: Check for Gestalt gestaltQD3DViewer failed; \n", osError);
- goto Exit_VersionTest;
- } else {
- if ((gestaltValue & (1 << gestaltQD3DViewerPresent)) == 0) {
- printf("Error: QuickDraw 3D Viewer isn't installed.\n");
- goto Exit_VersionTest;
- }
- printf("QuickDraw 3D Viewer is installed.\n");
- }
-
- /* (No Gestalt for QuickDraw 3D Viewer version) */
-
- /*
- * Q3ViewerGetReleaseVersion
- */
- releaseViewer = ~0;
- osError = Q3ViewerGetReleaseVersion(&releaseViewer);
-
- if (osError != noErr ) {
- printf("Error: Q3ViewerGetReleaseVersion failed.\n");
- goto Exit_VersionTest;
- } else {
- RELEASE_TO_MAJOR_MINOR_DOT( releaseViewer,
- releaseViewerMajor,
- releaseViewerMinor,
- releaseViewerDot);
-
- /* Compare Viewer release version with QD3D release version */
- if ( (releaseViewerMajor != releaseQd3dMajor) ||
- (releaseViewerMinor != releaseQd3dMinor) ||
- (releaseViewerDot != releaseQd3dDot) )
- {
- printf("Error: Unexpected version number from Q3ViewerGetReleaseVersion - returned %d.%d.%d",
- releaseViewerMajor, releaseViewerMinor, releaseViewerDot);
- goto Exit_VersionTest;
- }
- printf("Q3ViewerGetReleaseVersion returns %d.%d.%d\n",
- releaseViewerMajor, releaseViewerMinor, releaseViewerDot);
- }
-
- /*
- * Q3ViewerGetVersion
- */
- majorRevision = ~0;
- minorRevision = ~0;
- osError = Q3ViewerGetVersion(&majorRevision, &minorRevision);
-
- if (osError != noErr) {
- printf("Error: Q3GetVersion failed.\n");
- goto Exit_VersionTest;
- } else {
- if ( (majorRevision != kQD3DViewerCurrentMajorRevision) ||
- (minorRevision != kQD3DViewerCurrentMinorRevision) )
- {
- printf("Error: Incorrect version number - Q3ViewerGetVersion returns %d.%d",
- majorRevision, minorRevision);
- goto Exit_VersionTest;
- }
- printf("Q3ViewerGetVersion returns %d.%d\n",
- majorRevision, minorRevision);
- }
-
- #endif /* VIEWER_VERSION */
-
-
- Exit_VersionTest:
-
- if (initStatus == kQ3Success) {
- status = Q3Exit();
- if (status == kQ3Failure) {
- printf("Error: Q3Exit failed.\n");
- }
- }
- }
-
-